#include "headerdelegate.h"
#include <QStyledItemDelegate>
#include <QPainter>
#include <QIcon>
#include <QSize>


HeaderDelegate::HeaderDelegate(QObject *parent):QStyledItemDelegate(parent)
{

}

void HeaderDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if (index.column() == 0) { // 假设我们只修改第一列的表头
        // 设置文本
        QString text = index.data().toString();
        // 设置图片
        QIcon icon = QIcon(":/E:/icon.png"); // 替换为你的图标路径
        QPixmap pixmap = icon.pixmap(option.rect.size());

        // 绘制图片
        painter->drawPixmap(option.rect.topLeft(), pixmap);

        // 计算文本位置
        int textY = option.rect.top() + pixmap.height() + 5; // 5是间距
        QRect textRect(option.rect.left(), textY, option.rect.width(), option.rect.height() - pixmap.height() - 5);

        // 绘制文本
        painter->drawText(textRect, Qt::AlignHCenter | Qt::AlignTop, text);
    } else {
        QStyledItemDelegate::paint(painter, option, index);
    }
}

QSize HeaderDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if (index.column() == 0) {
        // 计算表头的高度，包括图片和文本的高度
        QString text = index.data().toString();
        QFontMetrics fm(option.font);
        int textHeight = fm.height();
        int iconHeight = 32; // 图标的高度
        return QSize(option.rect.width(), textHeight + iconHeight + 10); // 10是间距
    } else {
        return QStyledItemDelegate::sizeHint(option, index);
    }
}
